package cn.liuhulu.tool;

import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Optional;

public class Tools {
	// 小数点保留两位格式化
	public final static DecimalFormat decimalFormat = new DecimalFormat("0.00");
	public final static DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");

	/**
	 * 日期格式化，如果没有则格式化一个当前日期出去
	 * 
	 * @param date
	 * @return
	 */
	public static String dateRestFormat(Date date) {
		return date == null ? dateFormat.format(new Date()) : dateFormat.format(date);
	}

	/**
	 * 是否数字
	 * 
	 * @param obj
	 * @return
	 */
	public static boolean isNumber(Object obj) {
		if (obj == null) {
			return false;
		}
		return obj.toString().matches("^\\d+");
	}

	/**
	 * 是否小数
	 * 
	 * @return
	 */
	public static boolean isDecimal(Object obj) {
		if (obj == null) {
			return false;
		}
		return obj.toString().matches("^\\d+\\.\\d+$");
	}

	/**
	 * 格式化小数保留两位
	 * 
	 * @param f
	 * @return
	 */
	public static String formatFloat(Float f) {
		return decimalFormat.format(f);
	}

	/**
	 * 两数相乘
	 * 
	 * @param n1
	 * @param n2
	 * @return
	 */
	public static Optional<String> multiply(Object n1, Object n2) {
		if ((isDecimal(n1) || isNumber(n1)) && (isDecimal(n2) || isNumber(n2))) {
			return Optional.of(formatFloat(Float.valueOf(n1.toString()) * Float.valueOf(n2.toString())));
		}
		return Optional.empty();
	}
}
